' PB_CGIsub_showDataResults.bas
#COMPILE EXE
#DIM ALL

#INCLUDE "Win32api.inc"

#INCLUDE "../Libraries/PBCGI.inc"
#INCLUDE "../Libraries/PB_FileHandlingRoutines.inc"

FUNCTION PBMAIN () AS LONG
  LOCAL strInfo AS STRING
  LOCAL x AS STRING
  LOCAL p AS LONG
  DIM strParam(1) AS STRING
  LOCAL lngR AS LONG
  LOCAL strHTML AS STRING
  '
  ' read from stdIN
  x = ReadCGI
  ' count the parameters and put in an array
  p = ParseParams(x,strParam())
  '
  IF p THEN
    FOR lngR = 1 TO UBOUND(strParam)
      SELECT CASE lngR
        CASE 1
        ' random number to ensure no caching
        ' -> ignore this parameter
        CASE 2
        ' parameter comes in as N=value
          strInfo = DecodeCGI(strParam(lngR))
        ' so trim of the name of the parameter
          strInfo = PARSE$(strInfo,"=",2)
      END SELECT
    NEXT lngR
  END IF

  WriteCGI funReturnHTMLSection(strInfo)

END FUNCTION
'
FUNCTION funReturnHTMLSection(strInfo AS STRING ) AS STRING
  LOCAL strFilename AS STRING
  LOCAL strHTML AS STRING
  DIM a_strWork() AS STRING
  LOCAL lngR AS LONG
  LOCAL strData AS STRING
  LOCAL strEyeColour AS STRING
  LOCAL lngCounter AS LONG

  strFilename = EXE.PATH$ & "MyLargeFile.txt"
  strInfo = TRIM$(strInfo) ' trim any leading or trailing spaces
  '
  IF ISTRUE funReadTheFileIntoAnArray(strFilename, _
                                      BYREF a_strWork()) THEN
  ' data has been loaded
    strHTML = "<table border=1>"
    FOR lngR = 0 TO UBOUND(a_strWork)
      strData = a_strWork(lngR)
      '
      IF lngR = 0 THEN
      ' handle the header line
        REPLACE $TAB WITH "</td><td>" IN strData
        strHTML = strHTML & "<tr class=""AListHeader""><td>" & _
                  strData & "</td></tr>"
      ELSE
      ' handle all the other data lines
      ' pick up the eye colour column
      strEyeColour = TRIM$(PARSE$(strData,$TAB,5))
      IF LCASE$(strInfo) = LCASE$(strEyeColour) THEN
      ' eye colour matches
        INCR lngCounter
        REPLACE $TAB WITH "</td><td>" IN strData
        strHTML = strHTML & "<tr " & funBanding & "><td>" & strData & "</td></tr>"
      '
      END IF
      '
      END IF
      '
    NEXT lngR
  '
  ELSE
  ' data can't be loaded
    strHTML = "<p>Unable to load the data</p>"
  '
  END IF
  '
  FUNCTION = "<p>Data searched for where eye colour = " & strInfo & _
             " returned " & FORMAT$(lngCounter) & " records</p>" & _
              strHTML

END FUNCTION
'
FUNCTION funBanding() AS STRING
  STATIC lngValue AS LONG
  '
  IF lngValue = 1 THEN
    FUNCTION = "class=""NewBandingEven"""
    lngValue = 0
  ELSE
    FUNCTION = "class=""NewBandingOdd"""
    lngValue = 1
  END IF
  '
END FUNCTION